package com.danciyixue.boot.dcyx.service;

import com.danciyixue.boot.dcyx.model.entity.UserExtensions;
import com.danciyixue.boot.dcyx.model.form.UserExtensionsForm;
import com.danciyixue.boot.dcyx.model.query.UserExtensionsQuery;
import com.danciyixue.boot.dcyx.model.vo.UserExtensionsVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.validation.Valid;

/**
 * 用户扩展配置信息服务类
 *
 * @author youlaitech
 * @since 2025-06-15 16:36
 */
public interface UserExtensionsService extends IService<UserExtensions> {

    /**
     *用户扩展配置信息分页列表
     *
     * @return {@link IPage<UserExtensionsVO>} 用户扩展配置信息分页列表
     */
    IPage<UserExtensionsVO> getUserExtensionsPage(UserExtensionsQuery queryParams);

    /**
     * 获取用户扩展配置信息表单数据
     *
     * @param id 用户扩展配置信息ID
     * @return 用户扩展配置信息表单数据
     */
     UserExtensionsForm getUserExtensionsFormData(Long id);

    /**
     * 新增用户扩展配置信息
     *
     * @param formData 用户扩展配置信息表单对象
     * @return 是否新增成功
     */
    boolean saveUserExtensions(UserExtensionsForm formData);

    /**
     * 修改用户扩展配置信息
     *
     * @param id   用户扩展配置信息ID
     * @param formData 用户扩展配置信息表单对象
     * @return 是否修改成功
     */
    boolean updateUserExtensions(Long id, UserExtensionsForm formData);

    /**
     * 删除用户扩展配置信息
     *
     * @param ids 用户扩展配置信息ID，多个以英文逗号(,)分割
     * @return 是否删除成功
     */
    boolean deleteUserExtensionss(String ids);

    /**
     * 通过查询用户Token获取用户扩展配置信息
     *
     * @return
     */
    UserExtensionsVO getUserExtensionsByUserToken();

    /**
     * 先查询后，若无记录则新增，若有记录则更新用户扩展配置信息
     *
     * @param formData
     * @return
     */
    boolean saveOrUpdateUserExtensions(@Valid UserExtensionsForm formData);
}
